package com.prj.ufdm.demo.tutorial.thread;

import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;

/**
   * 一、创建执行线程的方式三：实现 Callable 接口。 相较于实现 Runnable 接口的方式，方法可以有返回值，并且可以抛出异常。
   * 二、执行 Callable 方式，需要 FutureTask 实现类的支持，用于接收运算结果。  FutureTask 是  Future 接口的实现类
 */
public class TestCallableFuture {
	
	public static void main(String[] args) throws Exception {
		
		TCFThreadDemo td = new TCFThreadDemo();
		//1.执行 Callable 方式，需要 FutureTask 实现类的支持，用于接收运算结果。
		FutureTask<Integer> result = new FutureTask<Integer>(td);
		new Thread(result).start();
		
		System.out.println(result.get());
	}

}

class TCFThreadDemo implements Callable<Integer>{
	@Override
	public Integer call() throws Exception {
		int sum = 0;
		for (int i = 0; i <= 100; i++) {
			sum += i;
		}
		return sum;
	}
}